看雪论坛作者ID:独钓者OW
目录
使用到的分析工具
查壳
基础分析
基础静态分析
资源信息分析
查看导入表
字符串检索
基础动态分析
病毒运行效果
执行操作
文件操作
目录遍历
文件创建
文件属性操作
文件修改
注册表操作
进程监控
网络监控
使用IDA和OD进行详细分析
对panda.exe的主程的分析
主题逻辑
病毒程序运行伪装和感染自校验函数
感染文件函数
感染文件线程
感染时钟函数
局域网传播函数
病毒自保护函数
第一个时钟函数
第二个时钟
第三个时钟
第四个时钟
手杀方法
这是我第一次分析病毒,我把我整个学习过程记录下来分享给大家,希望大家能有所受益。萌新第一次分析病毒,请各位大佬多多见谅。
文件: C:\Users\15pb-win7\Desktop\样本及调试文件\样本及调试文件\panda.vir
大小: 61952 bytes
修改时间: 2007年1月9日, 9:06:10
MD5: 3520D3565273E41C9EEB04675D05DCA8
SHA1: BB1D8FA7EE4E59844C1FEB7B27A73F9B47D36A0A
CRC32: 23B6DA2A
1、查壳工具:PEID、ExeInfo PE
2、动态反汇编分析工具:15PB OD
3、静态反汇编分析工具:IDA Pro v6.8
4、ARK行为监控工具:火绒剑、PCHUNTER32
5、网络沙箱:微步在线沙箱
7、资源查看工具:Resource Hacker
8、网络数据监控工具:WSEplorer
9、PE解析工具:Load PE
10、特征生成工具:Hash
11、二进制文本编辑工具:notepad++、010Editor
12、注册表对比工具:RegShot
为了更加准确判断程序的基本信息,这里使用PEID和Exeinfo PE进行查壳。结论:病毒是Borland Delphi程序编写的无壳程序。
就是在程序不运行的情况下尽可能多的使用工具对进行病毒行为信息的搜集和整理和猜测的过程。PS:最后需要通过IDA和OD对这些病毒行为猜测进行验证。资源信息分析
有些病毒会利用资源表对自己进行隐藏,所以需要利用资源工具对资源信息进行分析检测。除了字符串和熊猫烧香图标外,没有找到其他有用的信息。
查看导入表
将病毒文件拖入Load PE查看每个DLL导入的API,对病毒具体行为进行初步的猜测。为了方便大家观看,我利用Load PE的文本显示功能将导入表信息复制到了txt文件中并进行了整理。PS:这一步只是对病毒行为进行简单的猜测,目的是为了给详细分析时提供思路。具体病毒行为还是要通过IDA和OD双剑合璧为准。
字符串检索
根据上面通过导入表进行病毒行为猜测后需要对病毒字符串进行检索,从而过滤一些病毒行为,缩小分析难度。
静态字符串检索方法:
1、使用010Editor肉眼检索(很费时费力,不推荐)通过这一步又可以更加清晰的分析出病毒会对一些指定的注册表进行操作,以及调用cmd程序执行一些指令。一些判断条件等。
需要注意到一点,病毒导入表中有很明显的网络连接操作,但是我们没有找到任何关于ip或者网址之类的信息,可能是该类型的字符串被病毒进行加密。需要病毒运行起来执行解密函数后才能还原。
有了以上静态分析的基础,我们可以结合病毒运行起来的行为特征进行第二次行为定位。
发现无法打开任务管理器,文件夹下的文件图标被改为熊猫烧香图标:
执行了cmd、net、net1和spcolsv.exe进程。
目录遍历
文件创建
查看病毒创建了哪些文件,猜测遍历目录时会为每个目录都添加一个Desktop_.ini文件。打开Desktop_.ini文件,发现与系统时间相同,猜测该文件为病毒程序提供感染时间。
文件属性操作
文件修改
使用RegShot工具拍摄注册表快照,对比病毒具体修改了哪些注册表键值。由于修改的注册表较多,这里就不放上所有的修改项,大家可以自己使用这个工具进行对比。
可以发现进程大多数都是在执行遍历进程的操作,而且有进程的修改和给窗口发送消息的操作。可以猜测病毒是在遍历杀软,并尝试发送关闭程序消息给杀软实现对杀软的关闭。内存读写可能在控制指定进程执行特定操作。
首先用火绒剑观察是否有网络活动,发现进程有TCP协议进行网络操作。具体行为是通过感染139端口和445端口进行主动连接指定的IP地址。使用WSExploer观察进程,发现了熊猫产生的可以流量。再次确认了熊猫的网络操作。
对于熊猫的分析我采用了传统的线性分逐层分析法,即先完善病毒程序的主题框架,再完善细节。
主题逻辑
首先进入病毒主函数后会看见病毒对三个字符串进行了拷贝操作,分别将字符串地址拷贝到临时指针中。然后开始进行第一次字符串解密操作。在通过了两个解密校验后。我对熊猫烧香的主题逻辑进行了整理,主体程序主要分为三个主函数:以上的程序代码是病毒的主逻辑函数。接下来我们对这三个函数分别进行分析。
病毒程序运行伪装和感染自校验函数
病毒进入初始化函数后会先判断当前运行程序所在目录下是否有Desktop_.ini时间文件,如果存在就删除掉该文件。病毒开始搜索运行文件中的感染标记来区分,目前运行的是病毒本体还是被感染的文件。感染标记位于病毒最后一个字节,如果最后一个字节为1,则表示为被感染的文件。判断为感染母体后,病毒还会通过一次路径比较判断是否是第一次运行母体程序。如果是第一次运行就将病毒伪装到:系统目录+dirvers目录下,并更名为spcolsv.exe进行伪装运行。最后退出这个傀儡程序。如果运行的是被感染的文件。则通过裁剪感染标记位后面的感染标记获取一个文件名称原程序名称。还原的程序名称=原文件名+原文件后缀。然后创建一个批处理文件并运行。目的为了还原原文件,让运行中的病毒重新对该文件进行感染。在写完批处理文件后,被感染的文件再次对病毒进程进行一次判断。拍摄进程快照,判断伪装的病毒程序是否还在运行。如果没有运行就到伪装目录下删除伪装病毒程序。重新写入一个病毒程序并重新运行。
感染文件函数
2、设置一个时钟定时到所有盘符下写入Setup.exe和autorun.inf文件3、创建多个线程,感染139和445端口,将病毒文件自拷贝到网络共享目录下
感染文件线程
病毒在遍历文件的时候会在所有指定文件夹下创建一个Desktop_.ini记录感染时间,并对该目录下所有文件后缀遍历,找到目标后缀就会感染,病毒感染逻辑如下图。当病毒遇到网络文件后缀时,会将一段标签数据写入文件。让网络文件被解析时直接访问病毒服务器。
感染时钟函数
病毒第二个函数是设置了一个计时器,定时对盘符进行遍历。主要函数如下:
局域网传播函数
第三个函数逻辑是创建了10个TLS线程,判断有哪些局域网主机可以通过139和445端口连接。如果能连接将病毒文件拷贝到网络共享文件夹中。
病毒自保护函数
进入病毒自保护函数可以看到病毒设置了4个时钟函数。
第一个时钟函数
进入第一个时钟函数操作比较简单。病毒定时将自己的路径添加入开机自启项中。而且定期设置不显示隐藏属性。第二个时钟
第二个时钟定时会创建一个线程,线程用于从病毒文件下载程序并运行。
第三个时钟
定时创建两个线程,第一个线程与第二个时钟的创建的线程执行内容相同。第二个线程主要删除了网络共享文件,并且设置用户文件隐藏共享。
第四个时钟
2、通过注册表管理器将隐藏属性svcshare修改为13、注册表中HKEY_CURRENTUSER\Software\Microsoft\Windows\CurrentVersion\Run下的自启子键删除4、将隐藏的Setup.exe和autorun.inf删除
看雪ID:独钓者OW
https://bbs.pediy.com/user-784955.htm
*本文由看雪论坛 独钓者OW 原创,转载请注明来自看雪社区